<?php
/*******************************************************************************

    FinalsClub.org is a platform for students and faculty to collaborate
    and share their knowledge with the world.

    Copyright (C) 2009  Andrew Magliozzi
 
    This file is a part of FinalsClub.org.

    FinalsClub.org is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
    To contact FinalsClub.org, send an email to info@finalsclub.org, or
    send mail to Finals Club, c/o Veritas Tutors, 1132 Massachusetts Avenue,
    Cambridge, MA 02138.

*******************************************************************************/

class GroupCoursePeer extends BaseGroupCoursePeer {
	
	/**
	 * Deletes all group course relationships for a given group id
	 * @param $group_id
	 * @return boolean, true if successful, false otherwise
	 */
	public static function destroyByGroupId($group_id) {
		$c = new Criteria();
		$c->add(GroupCoursePeer::GROUP_ID, $group_id);
		return GroupCoursePeer::doDelete($c);
	}
	
	/**
	 * Retrieve all courses for a given group
	 * @param $group_id
	 * @return an array of GroupCourse objects
	 */
	public static function retrieveByGroupId($group_id) {
		$c = new Criteria();
		$c->add(GroupCoursePeer::GROUP_ID, $group_id);
		return GroupCoursePeer::doSelectJoinCourse($c);
	}
	
	public static function retrieveByGroupIdAndCourseId($group_id,$course_id){
		$c = new Criteria();
		$c->add(GroupCoursePeer::GROUP_ID, $group_id);
		$c->add(GroupCoursePeer::COURSE_ID, $course_id);
		return GroupCoursePeer::doSelectOne($c);
		
	}
	
	public static function retrieveByGroupIdPager($group_id, $page = 1, $perPage = 10){
		$c = new Criteria();
		$c->add(GroupCoursePeer::GROUP_ID, $group_id);
		$pager = new sfPropelPager('GroupCourse', $perPage);
		$pager->setPeerMethod('doSelectJoinGroup');
		$pager->setCriteria($c);
		$pager->setPage($page);
		$pager->init();		
		return $pager;
	}
	
	/**
	 * Retrieve all groups for a given course
	 * @param $course_id
	 * @return an array of GroupCourse objects
	 */
	public static function retrieveByCourseId($course_id) {
		$c = new Criteria();
		$c->add(GroupCoursePeer::COURSE_ID, $course_id);
		return GroupCoursePeer::doSelectJoinGroup($c);
	}
	
	/**
	 * Retrieve all groups for a given course pager
	 * @param $course_id
	 * @return sfPager
	 */
	public static function retrieveByCourseIdPager($course_id, $page=1, $per_page = 10) {
		$c = new Criteria();
		$c->add(GroupCoursePeer::COURSE_ID, $course_id);
		$pager = new sfPropelPager('GroupCourse', $per_page);
		$pager->setPage($page);
		$pager->setPeerMethod('doSelectJoinCourse');
		$pager->setCriteria($c);
		$pager->init();
		return $pager;
	}
	
	/**
	 * Retrieves all the group course ids for a given group id
	 * @param $group_id
	 * @return an array of ids
	 */
	public static function getSelectedCourseIds($group_id = null) {
		$ids = array();
		if($group_id && $courses = self::retrieveByGroupId($group_id)) {
			foreach($courses as $course) {
				$ids[] = $course->getCourseId();
			}
		}
		return $ids;		
	}
}
